/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Mail;



import java.io.Serializable;



/**
 *
 * @author fabio
 */
public class MailClient implements Serializable{

    private ServidorMessage serverMessage;
    private String usuario;

    /**
     * Crea nuevo MailClient
     *
     * @param usuario
     * @param server
     */
    public MailClient(String usuario, MailServer server) {
        serverMessage = new ServidorMessage(server);
        this.usuario = usuario;

    }

    /**
     * Este método consulta al servidor a fin de ver si el usuario tiene algún
     * mensaje. Este método debe retornar únicamente la cantidad de mensajes que
     * tiene el usuario.
     *
     * @return cantidad de mensajes del usuario.
     */
    public int checkMessages() {
        int contadorMsjs = 0;
        Message[] listaMensajes = serverMessage.mensajes();
        for (Message mensaje : listaMensajes) {
            String destinatario = mensaje.obtenerDestinatario();
            contadorMsjs = contadorMsjs + comparar(destinatario, usuario);
        }
        return contadorMsjs;
    }

    private int comparar(String user, String destinatario) {
        int contadorMensajes = 0;
        if (user.equals(destinatario)) {
            contadorMensajes++;
        }
        return contadorMensajes;

    }

    /**
     * Este método obtiene el siguiente mensaje del servidor y muestra el
     * mensaje al usuario.
     *
     * @return el siguiente Message del MailServer.
     */
    public Message readNextMessage() {

        Message msj = serverMessage.getNextMessage(usuario);
        return msj;
    }

    /**
     * Este método obtiene toda la información necesaria del usuario, crea un
     * objeto de tipo Message y lo envía al servidor.
     *
     * @param mensaje
     */
    public void sendMessage(Message mensaje) {

        serverMessage.post(mensaje);

    }
    
    /**
     * Este método obtiene toda la información necesaria del usuario, crea un
     * objeto de tipo Message y lo envía al servidor, facilita el envio de un mensaje.
     * 
     * @param destinatario 
     * @param asunto 
     * @param textoMensaje 
     */

    public void sendMessage(String destinatario, String asunto, String textoMensaje) {
        MessageSender destino = new MessageSender(usuario, destinatario);
        MessageContenido asuntoYcontenido = new MessageContenido(asunto, textoMensaje);
        Message msj = new Message(destino, asuntoYcontenido);
        serverMessage.post(msj);

    }

}
